import { defineStore } from 'pinia'
import { ref } from 'vue'
import { getLoginUserUsingGet } from '@/api/userController.ts'

export const useLoginUserStore = defineStore('loginUserStore', () => {
  const loginUser = ref<API.UserLoginVO>({
    userName: '未登录',
  })

  /**
   * 远程获取登录用户
   */
  //async 表示这是一个异步函数返回的是一个promise，内部可以使用 await 等待
  //promise 的完成，并不会造成阻塞
  async function fetchLoginUser() {
    const res = await getLoginUserUsingGet()
    if(res.data.code === 0 && res.data.data){
      //将后端返回的数据，赋值给状态管理器中的值 loginUser
      loginUser.value = res.data.data
    }

  }

  /**
   * 设置登录用户
   * @param newLoginUser
   */
  function setLoginUser(newLoginUser: any) {
    loginUser.value = newLoginUser
  }

  return { loginUser, fetchLoginUser, setLoginUser }
})
